package com.liu.common.controller;

import com.liu.common.bean.ResultBean;
import com.liu.common.exception.ValidateException;
import com.liu.common.utils.ResultStatus;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;

import javax.xml.bind.ValidationException;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class BaseController {

    protected ResultBean success(String msg){
        return handler(ResultStatus.SUCCESS,msg,null);
    }

    protected ResultBean success(String msg,Object data){
        return handler(ResultStatus.SUCCESS,msg,data);
    }

    protected ResultBean fail(String msg){
        return handler(ResultStatus.FAIL,msg,null);
    }

    protected ResultBean fail(String msg,Object data){
        return handler(ResultStatus.FAIL,msg,data);
    }


    /**
     * 保存企业信息返回结果
     * @param rs
     * @return
     */
    protected ResultBean saveResult(int rs){
        return rs==1?success("保存成功"):fail("保存失败");
    }

    /**
     * 修改企业信息返回结果
     * @param rs
     * @return
     */
    protected ResultBean updateResult(int rs){
        return rs==1?success("修改成功"):fail("修改失败");
    }
    /**
     * 逻辑删除企业返回结果
     * @param rs
     * @return
     */
    protected  ResultBean deleteResult(int rs){
        return rs==1?success("删除成功"):fail("删除失败");
    }


    /**
     * 后端校验
     * @param result
     */
    protected void validate(BindingResult result){
        //获取错误字段信息
        List<FieldError> list = result.getFieldErrors();
        if(null!=list && list.size()>0){
            Map error = new HashMap();
            list.forEach(f->{
                error.put(f.getField(),f.getDefaultMessage());
            });
            throw  new ValidateException(error);
        }
    }


    ResultBean handler(ResultStatus status ,String msg,Object data){
        return new ResultBean(status.getCode(),msg,data);
    }



}
